Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

332
Visualizações
Cómo utilizar [Microsoft.Win32.RegistryValueKind]::TryParse

Parece que no puedo hacer que [Microsoft.Win32.RegistryValueKind]::TryParse funcione correctamente. Cada solución que intento siempre devuelve Cannot find an overload for "TryParse" and the argument count: "2". (or "3") a pesar de que muestra lo siguiente.

 PS C:\Windows\system32> [Microsoft.Win32.RegistryValueKind]::TryParse OverloadDefinitions ------------------- static bool TryParse[TEnum](string value, [ref] TEnum result) static bool TryParse[TEnum](string value, bool ignoreCase, [ref] TEnum result)

En mi experiencia, cualquiera de los siguientes normalmente debería funcionar bien.

 [Microsoft.Win32.RegistryValueKind]::TryParse('dword',[ref]$Null) [Microsoft.Win32.RegistryValueKind]::TryParse('dword',$true,[ref]$Null)

Mientras tanto, puedo convertir la cadena como [Microsoft.Win32.RegistryValueKind] pero tengo curiosidad por saber qué estoy haciendo mal.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

El método [Microsoft.Win32.RegistryValueKind]::TryParse() por sí solo devolverá $true o $false , dependiendo de si el análisis se realizó correctamente o no.

  • El primer parámetro es el valor de cadena que desea analizar convertido a uno de los tipos de enumeración RegistryValueKind .
  • El último parámetro es la variable que contiene el tipo de elección RegistryValueKind.
    Luego, el método intenta convertir el valor de cadena dado a ese tipo de registro.
  • Opcionalmente, hay una sobrecarga con un segundo parámetro en el medio que puede establecer en $true para que funcione sin distinción entre mayúsculas y minúsculas en el valor de cadena dado.

ejemplo:

 [Microsoft.Win32.RegistryValueKind]::TryParse('12345', [ref][Microsoft.Win32.RegistryValueKind]::DWord)

devuelve True porque '12345' se puede convertir en un tipo de valor DWord entero.

También puede leer el valor analizado de esta manera

 $result = [Microsoft.Win32.RegistryValueKind]::DWord # 4 if ([Microsoft.Win32.RegistryValueKind]::TryParse('12345', [ref]$result)) { Write-Host "The value can be stored as $result (DWord)" }

De todos modos, si su intención es leer los valores del registro y tratar de determinar si el RegistryKind de esa entrada es correcto, creo que el método RegistryKey.GetValueKind() sería más fácil de usar.

over 4 years ago · Santiago Trujillo Relatório

0

TryParse en realidad está implementado por System.Enum y es un método genérico. Devuelve un bool si el análisis tuvo éxito, y el segundo parámetro es una out con el resultado real del análisis.

Tiene una serie de problemas si desea utilizar TryParse .

En primer lugar, no puede llamar a un método genérico directamente en Powershell a menos que esté usando PS 7.3 o superior

 [System.Enum]::TryParse<Microsoft.Win32.RegistryValueKind>('DWord', [ref]$prm)

Para las versiones de Powershell que usan .Net Core o .Net 5 (no sé si hay alguno), también puede usar la versión no genérica de TryParse

 [System.Enum]::TryParse([Microsoft.Win32.RegistryValueKind], 'DWord', [ref]$prm)

Sea como fuere, en versiones anteriores es necesario utilizar la reflexión.

 $arrParams = @('DWord', $null) $method = ([System.Enum].GetMethods() | where {($_.Name -eq "TryParse") -and ($_.GetParameters().Length -eq 2) })[0].MakeGenericMethod(@([Microsoft.Win32.RegistryValueKind])) $method.Invoke($null, $arrParams); $arrParams[1]

Tenga en cuenta que el parámetro de cadena distingue entre mayúsculas y minúsculas y, por lo tanto, debe ser 'DWord'

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda